#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int Sumadd(int begin,int end )
{
  int sum=0;
  for(int i=begin;i<end;++i)
  {
    sum+=i;
  }
  return sum;
}


int main()
{
  //int Sum=Sumadd(1,100);
  //printf("sum==%d",Sum);
  //if(Sum==5050)
  //{
  //  return 0;
  //}
  //else
  //  return 1;
  pid_t id = fork();
    if(id == 0)
    {
        //子进程
        int cnt = 50;
        while(cnt)
        {
            printf("我是子进程: %d, 父进程: %d, cnt: %d\n", getpid(), getppid(), cnt--);
            sleep(1);
    //        int* p=NULL;
    //        *p=10;//段错误

        }
        exit(10);
    }
    //父进程
   // sleep(15);
   // pid_t ret =wait(NULL);
   
    int status=0;
   ////等待进程id,status:子进程退出结果[10] ; 0:阻塞式等待
   //pid_t ret=waitpid(id,&status,0);

   // if(id >0)
   // {
   //   //
   //   printf("wait success: %d, sig number: %d, child exit code: %d\n", ret, (status & 0x7F), (status>>8)&0xFF);
   // }
   // sleep(5);
    int ret = waitpid(id, &status, 0);
    if(ret > 0)
    {
        // 是否正常退出
        if(WIFEXITED(status))
        {
            // 判断子进程运行结果是否ok
            printf("exit code: %d\n", WEXITSTATUS(status));
        }
        else{
            //TODO
            printf("child exit not normal!\n");
        }

    }
}
